package com.ethink.warehouse.api;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ethink.warehouse.api.info.LogisticsTraceDetailOrderInfo;
import com.ethink.warehouse.api.request.LogisticsTraceDetailOrderListRequest;
import com.ethink.warehouse.api.request.LogisticsTraceDetailOrderQueryRequest;
import com.ethink.warehouse.api.request.LogisticsTraceDetailOrderUpdateRequest;
import com.ethink.warehouse.api.response.LogisticsTraceDetailOrderDeleteResponse;
import com.ethink.warehouse.api.response.LogisticsTraceDetailOrderUpdateResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * 入库/出库单 Facade接口
 *
 * @author default
 * @date 2022-11-10
 */
@FeignClient(name = "ethink-warehouse-service", path = "warehouse-service/facade/v1/logisticsTraceDetailOrder", contextId = "logisticsTraceDetailOrderFacade")
public interface LogisticsTraceDetailOrderFacade {

    @PostMapping("/queryLogisticsTraceDetailOrder")
    @ResponseBody
    Page<LogisticsTraceDetailOrderInfo> queryLogisticsTraceDetailOrder(@RequestBody LogisticsTraceDetailOrderQueryRequest request);

    @PostMapping("/getLogisticsTraceDetailOrderById")
    @ResponseBody
    LogisticsTraceDetailOrderInfo getLogisticsTraceDetailOrderById(@RequestParam("logisticsTraceDetailOrderId") Long logisticsTraceDetailOrderId);

    @PostMapping("/listLogisticsTraceDetailOrder")
    @ResponseBody
    List<LogisticsTraceDetailOrderInfo> listLogisticsTraceDetailOrder(@RequestBody LogisticsTraceDetailOrderListRequest request);

    @PostMapping("/updateLogisticsTraceDetailOrder")
    @ResponseBody
    LogisticsTraceDetailOrderUpdateResponse updateLogisticsTraceDetailOrder(@RequestBody LogisticsTraceDetailOrderUpdateRequest request);

    @PostMapping("/deleteLogisticsTraceDetailOrder")
    @ResponseBody
    LogisticsTraceDetailOrderDeleteResponse deleteLogisticsTraceDetailOrder(@RequestParam("logisticsTraceDetailOrderId") Long logisticsTraceDetailOrderId);

}